<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" lang="zh" xml:lang="zh">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>任务: 复审代码</title>
<meta content="Task" name="uma.type">
<meta content="review_code" name="uma.name">
<meta content="复审代码" name="uma.presentationName">
<meta content="Discipline:rup_implementation_discipline:实施" name="uma.category">
<meta name="element_type" content="activity">
<meta content="description" name="filetype">
<meta name="role" content="技术复审员">
<link type="text/css" href="./../../css/default.css" rel="StyleSheet">
<script language="JavaScript" type="text/javascript" src="./../../scripts/ContentPageResource.js"></script><script language="JavaScript" type="text/javascript" src="./../../scripts/ContentPageSection.js"></script><script language="JavaScript" type="text/javascript" src="./../../scripts/ContentPageSubSection.js"></script><script language="JavaScript" type="text/javascript" src="./../../scripts/ContentPageToolbar.js"></script><script language="JavaScript" type="text/javascript" src="./../../scripts/contentPage.js"></script><script language="JavaScript" type="text/javascript">
					var backPath = './../../';
					var imgPath = './../../images/';
					var nodeInfo=[{view: "view:_LVCagP5WEdmAzesbYywanQ", path: ["_LVCagP5WEdmAzesbYywanQ", "_LWLSQDIEEdqwaNnSEheSAg", "_EzUssACVEdqrKcHWz1HoWw", "{0319C70C-35C9-4190-94F0-E7E5E9216CA0}", "{9EC0DF69-EEE1-4B41-8F48-9FB6B0DB7F72}"]}, {view: "view:_LVCagP5WEdmAzesbYywanQ", path: ["_LVCagP5WEdmAzesbYywanQ", "_zRigkAILEdq-_NKqZM1EhA", "_IY0NkAISEdqTna4sZVFRow", "_yd3ExNnmEdmO6L4XMImrsA", "{9EC0DF69-EEE1-4B41-8F48-9FB6B0DB7F72}"]}, {view: "view:_FCx1oN7CEdmsEI4YDGX2ag", path: ["_FCx1oN7CEdmsEI4YDGX2ag", "_f6_YwN7DEdmsEI4YDGX2ag", "_EzUssACVEdqrKcHWz1HoWw", "{0319C70C-35C9-4190-94F0-E7E5E9216CA0}", "{9EC0DF69-EEE1-4B41-8F48-9FB6B0DB7F72}"]}, {view: "view:_FCx1oN7CEdmsEI4YDGX2ag", path: ["_FCx1oN7CEdmsEI4YDGX2ag", "_kC0pcN7GEdm8G6yT7-Wdqw", "_yd3ExNnmEdmO6L4XMImrsA", "{9EC0DF69-EEE1-4B41-8F48-9FB6B0DB7F72}"]}];
					contentPage.preload(imgPath, backPath, nodeInfo, '', true, false, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td valign="top">
<div id="page-guid" value="{9EC0DF69-EEE1-4B41-8F48-9FB6B0DB7F72}"></div>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td nowrap="true" class="pageTitle">任务：复审代码</td><td width="100%">
<div id="contentPageToolbar" align="right"></div>
</td>
</tr>
</table>
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td class="pageTitleSeparator"><img height="1" title="" alt="" src="./../../images/shim.gif"></td>
</tr>
</table>
<div class="overview">
<table cellpadding="0" cellspacing="0" border="0" width="97%">
<tr>
<td width="50"><img title="" alt="" src="./../../images/task.gif"></td><td>
<table cellpadding="0" cellspacing="0" border="0" class="overviewTable">
<tr>
<td valign="top">此任务描述了如何复审代码以验证实施。</td>
</tr>
<tr>
<td>规程：<a href="./../../core.base_rup/disciplines/rup_implementation_discipline_263E22DB.html" guid="_yd3ExNnmEdmO6L4XMImrsA">实施</a></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">关系</div>
<div class="sectionContent">
<table cellpadding="0" cellspacing="0" border="0" class="sectionTable">
<tr valign="top">
<th scope="row" class="sectionTableHeading">角色</th><td width="42%" class="sectionTableCell"><span class="sectionTableCellHeading">主执行者:
								</span>
<ul>
<li>
<a href="./../../core.base_rup/roles/rup_technical_reviewer_81F699C8.html" guid="{0319C70C-35C9-4190-94F0-E7E5E9216CA0}">技术复审员</a>
</li>
</ul>
</td><td class="sectionTableCell"><span class="sectionTableCellHeading">其他执行者:
								</span></td>
</tr>
<tr valign="top">
<th scope="row" class="sectionTableHeading">输入</th><td width="42%" class="sectionTableCell"><span class="sectionTableCellHeading">必需:
								</span>
<ul>
<li>
<a href="./../../core.base_rup/workproducts/rup_implementation_element_49BB163E.html" guid="{E1E0DDA3-914F-4CC1-9D0A-ED4B8E8BBA89}">实施元素</a>
</li>
</ul>
</td><td class="sectionTableCell"><span class="sectionTableCellHeading">可选:
								</span>
<ul>
<li>无</li>
</ul>
</td>
</tr>
<tr valign="top">
<th scope="row" class="sectionTableHeading">输出</th><td colspan="2" class="sectionTableCell">
<ul>
<li>
<a href="./../../core.base_rup/workproducts/rup_review_record_CA816ECE.html" guid="{4047B5B0-5FB7-4960-8A7E-451719D85DFF}">复审记录</a>
</li>
</ul>
</td>
</tr>
<tr valign="top">
<th scope="row" class="sectionTableHeading">流程使用情况</th><td class="sectionTableCell" colspan="2">
<ul>
<li>
<a href="./../../core.base_rup/capabilitypatterns/implementation_8FF0AAD4.html" guid="{F2AD342D-0F3B-4E19-A351-75ECDCB806F5}">实施</a>
									&nbsp;&gt;&nbsp;
								<a href="./../../core.base_rup/capabilitypatterns/implement_components_AFD1799D.html" guid="{4DC6F53E-1FE1-44EE-812B-003D3BD1ACEA}">实施组件</a>
									&nbsp;&gt;&nbsp;
								<a href="./../../core.base_rup/capabilitypatterns/review_code_DB94104C.html" guid="_JrOlSEofEdqrjq4i3fchvA">复审代码</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">步骤</div>
<div class="sectionContent">
<table cellpadding="0" cellspacing="0" border="0" class="sectionTable">
<tr>
<td class="sectionTableSingleCell">
<div class="stepHeading"> 一般建议</div>
<div class="stepContent">
<table cellpadding="0" cellspacing="0" border="0" class="stepTable">
<tr valign="top">
<td><a id="GeneralRecommendations" name="GeneralRecommendations"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>目的</b>
            </td>
            <td width="95%">
                每次复审的一般建议。
            </td>
        </tr>
    </table><br />
</div>
<p>
    当构造高质量软件时，复审实施是对其他质量机制（如编译、集成和测试）的补充。在复审实施之前，先编译并使用工具（如代码规则检查程序）捕获尽可能多的错误。考虑使用可使代码可视化的工具。如果使用运行时错误检测工具执行代码，则在实施复审之前也会检测和消除更多错误。
</p>
<p>
    复审实施的好处是：
</p>
<ul>
    <li>
        对项目强制实施和鼓励使用通用的编码样式。代码复审是使成员遵循编程准则的有效方法。 为了保证这一点，复审所有作者和实施者得出的结果比复审所有源代码文件更重要。
    </li>
    <li>
        查找自动化测试未能发现的错误。实施复审捕获的错误与这些测试不同。
    </li>
    <li>
        在个人之间共享知识，并将知识从较有经验的人员传授给缺乏经验的人员。
    </li>
</ul>
<p>
    存在几种技术可用于复审实施。使用以下技术之一：
</p>
<ul>
    <li>
        <b>检查</b>。详细检查实施的正式评估技术。 检查被视为最有成效的复审技术，但它需要培训和准备工作。
    </li>
    <li>
        <b>走查</b>。一种评估技术，其中实施作者带领一个或多个复审人员通过实施。复审人员询问问题，并且就技术、样式、可能错误、编码标准违例等方面给出意见。
    </li>
    <li>
        <b>读代码</b>。一两个人员读代码。当复审人员准备就绪时，他们可开会并提出意见和问题。不过可以省略会议，复审人员可将意见和问题以书面的形式交给作者。建议通过读代码验证小的修改并作为“健康检查”。
    </li>
</ul>
<p>
    此角色的技能需求与<a class="elementLinkWithUserText" href="./../../core.base_rup/roles/rup_implementer_D145E819.html" guid="{75501BAA-0CCE-4852-A7B2-B10CA71C002A}">实施者</a>角色的需求类似；扮演此角色的人员通常被视为用于复审代码的编程语言方面的专家。在大多数项目中，此角色由来自实施团队的高级程序员来担任。
</p>
<p>
    另请参阅<a class="elementLinkWithUserText" href="./../../core.base_rup/guidances/guidelines/reviews_9FA4EDE.html" guid="2.981757544469536E-306">技术：复审</a>。
</p></td>
</tr>
</table>
</div>
<div class="stepHeading"> 建立实施检查点</div>
<div class="stepContent">
<table cellpadding="0" cellspacing="0" border="0" class="stepTable">
<tr valign="top">
<td><a id="Establish Checkpoints for the Implementation" name="Establish Checkpoints for the Implementation"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>目的</b>
            </td>
            <td width="95%">
                建立用于复审实施的核对表。&nbsp;
            </td>
        </tr>
    </table><br />
</div>
<p>
    <br />
     此部分提供了复审实施的常规核对表，作为在复审中查找内容的示例。编程准则应是代码质量的主要信息源。
</p>
<p>
    <b>概要</b>
</p>
<ul>
    <li>
        代码遵循编程准则吗？
    </li>
    <li>
        代码是自说明的吗？有可能通过阅读代码来了解代码吗？
    </li>
    <li>
        代码规则检查和／或运行时错误检测工具检测出的所有错误都已处理了吗？
    </li>
</ul>
<p>
    <b>注释</b>
</p>
<ul>
    <li>
        注释是最新的吗？
    </li>
    <li>
        注释是明确和正确的吗？
    </li>
    <li>
        如果代码变化，注释易于修改吗？
    </li>
    <li>
        注释侧重于解释<i>为什么</i>而不是<i>如何</i>的吗？
    </li>
    <li>
        对于所有意外、异常情况和变通方法错误都做了注释吗？
    </li>
    <li>
        对每个操作的目的都做了注释吗
    </li>
    <li>
        关于每个操作的其他相关情况都做了注释吗？
    </li>
</ul>
<p>
    <b>源代码</b>
</p>
<ul>
    <li>
        每个操作都具有描述操作内容的名称吗？
    </li>
    <li>
        参数具有描述性名称吗？
    </li>
    <li>
        通过每个操作的正常路径与其他异常路径明确可区分吗？
    </li>
    <li>
        操作过长吗？可以通过将相关语句抽取到私有操作中来简化此操作吗？
    </li>
    <li>
        操作过长吗？可以通过减少决策点个数来简化此操作吗？决策点是代码择取不同路径的语句，例如 <i>if</i>、<i>else</i>、<i>and</i>、<i>while</i> 和 <i>case</i> 语句。
    </li>
    <li>
        循环嵌套是最少的吗？
    </li>
    <li>
        变量命名恰当吗？
    </li>
    <li>
        代码是直接了当并避免了“耍小聪明的”解决方案的吗？
    </li>
</ul></td>
</tr>
</table>
</div>
<div class="stepHeading"> 准备复审记录并记录缺陷</div>
<div class="stepContent">
<table cellpadding="0" cellspacing="0" border="0" class="stepTable">
<tr valign="top">
<td><a id="Prepare Review Report and Document Defects" name="Prepare Review Report and Document Defects"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>目的</b>
            </td>
            <td width="95%">
                记录复审结果。<br />
                 确保记录已确定的缺陷。&nbsp;
            </td>
        </tr>
    </table><br />
</div>
<p>
    <br />
     每次复审会议之后，会议结果必须记录在<a class="elementLinkWithUserText" href="./../../core.base_rup/workproducts/rup_review_record_CA816ECE.html" guid="{4047B5B0-5FB7-4960-8A7E-451719D85DFF}">复审记录</a>中。此外，缺陷必须记录在<a class="elementLinkWithUserText" href="./../../core.base_rup/workproducts/rup_change_request_F2E6419.html" guid="{694A7BC8-3D20-4172-BC56-6C7BD4590BA5}">变更请求</a>中（并最终指派给拥有和促成解决方案的人）。
</p><br />
<br /></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
<table cellpadding="0" cellspacing="0" border="0" class="copyright">
<tr>
<td class="copyright"><p>
    &copy; &nbsp;Copyright IBM Corp.&nbsp;1987, 2006. &nbsp;All Rights Reserved.
</p></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script language="JavaScript" type="text/javascript">
				contentPage.onload();
			</script>
</html>
